#include <vector>
#include <list>

using namespace std;

class Observer;

class Subject {
public:
	virtual ~Subject() {}

    virtual void Attach(Observer*);
    virtual void Detach(Observer*);
    virtual void Notify(const string &, const string &);
protected:
	Subject() {}
	vector<Observer *> m_observers;
};